package dao;

import java.util.List;
import org.hibernate.HibernateException;
import entity.LimiteDespesasENT;
import entity.UsuarioENT;


public class LimiteDespesasDAO extends GenericDAO {
	
	
	@SuppressWarnings("unchecked")
	public List<LimiteDespesasENT> getPrevisao(UsuarioENT usuario) {
		
		try {
			query = sessao.getNamedQuery("getPrevisao");
			query.setParameter("id_usuario", usuario.getId());
			
			if(query.list().isEmpty()){
				return null;				
			}else{
				return query.list();
			}			
		} catch (HibernateException e) {
			System.out.println("Erro encontrado:"+getClass().toString()+" Mesagem de Erro: "+e.toString());			 
			return null;
		}
	}
	
//	@SuppressWarnings("unchecked")
//	public List<LimiteDespesasENT> getMensalResumo(UsuarioENT usuario, Date data) {
//		
//		try {
//			Calendar cal = Calendar.getInstance(); 
//			cal.setTime(data);
//			
//			int mes = cal.get(Calendar.MONTH)+1;
//			String ano = ""+cal.get(Calendar.YEAR) ;
//			cal.add(Calendar.MONTH, -2);  
//			String lastDay = ""+cal.getActualMaximum(Calendar.DAY_OF_MONTH);  
//			
//			String dataInicial =  "01"+"/"+mes+"/"+ano.substring(2,4)+" 00:00:00";
//			String dataFinal = lastDay+"/"+mes+"/"+ano.substring(2,4)+" 23:59:59";
//			
//			String sql = "select p.id                                                             "
//						+ "      ,p.descricao                                                     "
//						+ "      ,p.despesa_fixa                                                  "
//						+ "      ,data_pagamento                                                  "
//						+ "      ,p.data_vencimento                                               "
//						+ "      ,p.tipo                                                          "
//						+ "      ,p.valor_estimado                                                "
//						+ "      ,sum(p.valor_pagar) as valor_pagar                               "
//						+ "      ,p.valor_pago                                                    "
//						+ "      ,p.id_categoria_despesa                                          "
//						+ "      ,p.id_categoria_receita                                          "
//						+ "      ,p.id_conta_banco                                                "
//						+ "      ,p.id_subcategoria_despesa                                       "
//						+ "      ,p.id_usuario                                                    "
//						+ "from gff.previsao p                                                    "
//						+ "where id_usuario = :id_usuario 			                              "
//						+ "and p.data_vencimento between date_format(:data_inicial,'%d/%m/%y %T') "
//						+ " 						 and date_format(:data_final,'%d/%m/%y %T')   "
//						+ "group by p.id_conta_banco                                              "
//						+ "         ,p.tipo                                                       "
//						+ "        ,p.data_vencimento                                             "
//						+ "order by p.data_vencimento	                                          "
//						+ "		   ,p.id_conta_banco                                              "
//						+ "		   ,p.tipo desc                                                   ";
//			
//			query = sessao.createSQLQuery(sql).addEntity("previsao",PrevisaoENT.class);
//			
//			query.setParameter("id_usuario", usuario.getId());
//			query.setParameter("data_inicial", dataInicial);
//			query.setParameter("data_final", dataFinal);
//			
//			if(query.list().isEmpty()){
//				return null;				
//			}else{
//				return query.list();
//			}			
//		} catch (HibernateException e) {
//			System.out.println("Erro encontrado:"+getClass().toString()+" Mesagem de Erro: "+e.toString());			 
//			return null;
//		}
//	}
	
	
	public Boolean saveListEntity(List<LimiteDespesasENT> listEntity){
		for(LimiteDespesasENT l : listEntity){
			if(!saveEntity(l)){
				return false;
			}
		}
		return true;
	}
	
	public LimiteDespesasDAO() {
		// TODO Auto-generated constructor stub
	}

}
